2.3.7 FSM(有限状态机):独热编码逻辑方程
给定一个具有3个输入、3个输出和10个状态的状态机:
假设使用以下一位热编码:(S, S1, S11, S110, B0, B1, B2, B3, Count, Wait) = (10'b0000000001, 10'b0000000010, 10'b0000000100, ..., 10'b1000000000),通过观察推导出次态逻辑方程和输出逻辑方程。
假设采用一位热编码,通过观察推导状态转移和输出逻辑方程。仅实现此状态机的次态转移逻辑和输出逻辑(组合逻辑部分)。(测试台将使用非一位热编码的输入进行测试,以确保你没有尝试更复杂的操作。参见2.2.5第6小结fsm3onehot了解针对一位热编码状态机通过“观察”推导逻辑方程的具体含义。)
编写代码生成以下方程:
- B3_next —— 状态B3的次态逻辑
- S_next
- S1_next
- S11_next
- Count_next
- Wait_next
- done —— 输出逻辑
- counting
- shift_ena
模块声明
module top_module(
input d,
input done_counting,
input ack,
input [9:0] state, // 10-bit one-hot current state
output B3_next,
output S_next,
output S1_next,
output Count_next,
output Wait_next,
output done,
output counting,
output shift_ena
);